package prefix_sum;

/**
 * 寻找数组的中心下标
 * 前缀和
 */

public class Demo20250413 {
    public int pivotIndex(int[] nums) {
        int n = nums.length;
        int[] f = new int[n];
        int[] g = new int[n];
        //  1. 预处理前缀和数组和后缀和数组
        // 处理边界问题.
        // 因为f[0]本来就是0，所以从i = 1开始即可
        for (int i = 1; i < n; i++) {
            f[i] = f[i - 1] + nums[i - 1];
        }
        // 处理边界问题.
        // 因为g[n - 1]本来就是0，所以从i = n - 2开始即可
        for (int i = n - 2; i >= 0; i--) {
            g[i] = g[i + 1] + nums[i + 1];
        }
        // 2. 使用
        for (int i = 0; i < n; i++) {
            if (f[i] == g[i]) {
                return i;
            }
        }
        return -1;
    }
}
